home *** CD-ROM | disk | FTP | other *** search
- function(date: TDateTime, months): TDateTime;
- var
- yyyy,mm,dd,ddmax: word;
- date2: TDateTime;
- begin
- DecodeDate(date,yyyy,mm,dd);
- mm := mm + months; // months can be negative
- while mm > 12 do begin dec(mm,12); inc(yyyy); end;
- while mm < 1 do begin inc(mm,12); dec(yyyy); end;
- ddmax := DecodeDate(EncodeDate(yyyy,mm+1,1)-1,yyyy,mm,ddmax);
- if ddmax < dd then dd := ddmax;
- Result := EncodeDate(yyyy,mm,dd);
- end;
-